
"""
序列
Python内置了多种序列, 最常用的有三种, 分别是列表、元祖和字符串
列表和元祖的主要区别就是列表是可以修改的, 元祖是不可以修改的
"""

"""通用序列操作"""

str = 'hello' # 字符串就是由字符组成的序列
lst = ['h', 'e', 'l', 'l', 'o']
tp = ['h', 'e', 'l', 'l', 'o']

"""
索引: 访问单个元素
"""
# 索引可以使用-, 从最后一个开始向左数
print(str[2])
print(lst[2])
print(tp[2])
print(str[-1])
print(lst[-1])
print(tp[-1])
# 对于字面量, 可以直接操作, 无需将其先赋给变量
print('hello'[2])
# 如果函数返回一个序列, 可以直接对其进行索引操作
#print(input("请输入字符串：")[2])


"""
切片: 访问特定范围的元素
"""
print(str[1:3]) # el
print(str[-3:-1]) # ll
print(str[-3:]) # llo
print(str[:3]) # hel
print(str[:]) # hello
# 步长
print(str[0:5:2]) # hlo 步长为2
print(str[::2]) # hlo 步长为2
print(str[::-2]) # olh 步长为2, 从右向左


"""
序列相加
"""
str1 = 'hello'
str2 = 'world'
print(str1 + str2) # helloworld

"""
序列相乘
"""
print(str * 5) # hellohellohellohellohello
print([5]*10)  # [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
print([]*10) # []
# None表示什么都没有, 适用于要初始化一个长度为10但是列表中又没有任何内容的列表
print([None]*10) # [None, None, None, None, None, None, None, None, None, None]

"""
成员资格: 检查特定的值是否包含在序列中
"""
print('o' in str) # True
print('1' in lst) # False
print(len(str)) # 5
print(max(str)) # o
print(min(str)) # e

"""序列解包
"""
x, y = 1, 2
print(x, y)  # 1 2
x, y = y, x
print(x, y)  # 2 1





